home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / MacPerl 5.0.3 / MacPerl Source ƒ / Perl5 / t / lib / bigint.t < prev    next >
Encoding:
Text File  |  1995-10-30  |  4.4 KB  |  288 lines  |  [TEXT/MPS ]

  1. #!./perl
  2.  
  3. BEGIN {
  4.     chdir 't' if -d 't';
  5.     chdir '::' unless -d 'lib';
  6. #    @INC = '../lib';
  7.     @INC = '::lib';
  8. }
  9. require "bigint.pl";
  10.  
  11. $test = 0;
  12. $| = 1;
  13. print "1..246\n";
  14. while (<DATA>) {
  15.     chop;
  16.     if (/^&/) {
  17.         $f = $_;
  18.     } else {
  19.         ++$test;
  20.         @args = split(/:/,$_,99);
  21.         $ans = pop(@args);
  22.         $try = "$f('" . join("','", @args) . "');";
  23.         if (($ans1 = eval($try)) eq $ans) {
  24.             print "ok $test\n";
  25.         } else {
  26.             print "not ok $test\n";
  27.             print "# '$try' expected: '$ans' got: '$ans1'\n";
  28.         }
  29.     }
  30. __END__
  31. &bnorm
  32. abc:NaN
  33.    1 a:NaN
  34. 1bcd2:NaN
  35. 11111b:NaN
  36. +1z:NaN
  37. -1z:NaN
  38. 0:+0
  39. +0:+0
  40. +00:+0
  41. +0 0 0:+0
  42. 000000  0000000   00000:+0
  43. -0:+0
  44. -0000:+0
  45. +1:+1
  46. +01:+1
  47. +001:+1
  48. +00000100000:+100000
  49. 123456789:+123456789
  50. -1:-1
  51. -01:-1
  52. -001:-1
  53. -123456789:-123456789
  54. -00000100000:-100000
  55. &bneg
  56. abd:NaN
  57. +0:+0
  58. +1:-1
  59. -1:+1
  60. +123456789:-123456789
  61. -123456789:+123456789
  62. &babs
  63. abc:NaN
  64. +0:+0
  65. +1:+1
  66. -1:+1
  67. +123456789:+123456789
  68. -123456789:+123456789
  69. &bcmp
  70. abc:abc:
  71. abc:+0:
  72. +0:abc:
  73. +0:+0:0
  74. -1:+0:-1
  75. +0:-1:1
  76. +1:+0:1
  77. +0:+1:-1
  78. -1:+1:-1
  79. +1:-1:1
  80. -1:-1:0
  81. +1:+1:0
  82. +123:+123:0
  83. +123:+12:1
  84. +12:+123:-1
  85. -123:-123:0
  86. -123:-12:-1
  87. -12:-123:1
  88. +123:+124:-1
  89. +124:+123:1
  90. -123:-124:1
  91. -124:-123:-1
  92. &badd
  93. abc:abc:NaN
  94. abc:+0:NaN
  95. +0:abc:NaN
  96. +0:+0:+0
  97. +1:+0:+1
  98. +0:+1:+1
  99. +1:+1:+2
  100. -1:+0:-1
  101. +0:-1:-1
  102. -1:-1:-2
  103. -1:+1:+0
  104. +1:-1:+0
  105. +9:+1:+10
  106. +99:+1:+100
  107. +999:+1:+1000
  108. +9999:+1:+10000
  109. +99999:+1:+100000
  110. +999999:+1:+1000000
  111. +9999999:+1:+10000000
  112. +99999999:+1:+100000000
  113. +999999999:+1:+1000000000
  114. +9999999999:+1:+10000000000
  115. +99999999999:+1:+100000000000
  116. +10:-1:+9
  117. +100:-1:+99
  118. +1000:-1:+999
  119. +10000:-1:+9999
  120. +100000:-1:+99999
  121. +1000000:-1:+999999
  122. +10000000:-1:+9999999
  123. +100000000:-1:+99999999
  124. +1000000000:-1:+999999999
  125. +10000000000:-1:+9999999999
  126. +123456789:+987654321:+1111111110
  127. -123456789:+987654321:+864197532
  128. -123456789:-987654321:-1111111110
  129. +123456789:-987654321:-864197532
  130. &bsub
  131. abc:abc:NaN
  132. abc:+0:NaN
  133. +0:abc:NaN
  134. +0:+0:+0
  135. +1:+0:+1
  136. +0:+1:-1
  137. +1:+1:+0
  138. -1:+0:-1
  139. +0:-1:+1
  140. -1:-1:+0
  141. -1:+1:-2
  142. +1:-1:+2
  143. +9:+1:+8
  144. +99:+1:+98
  145. +999:+1:+998
  146. +9999:+1:+9998
  147. +99999:+1:+99998
  148. +999999:+1:+999998
  149. +9999999:+1:+9999998
  150. +99999999:+1:+99999998
  151. +999999999:+1:+999999998
  152. +9999999999:+1:+9999999998
  153. +99999999999:+1:+99999999998
  154. +10:-1:+11
  155. +100:-1:+101
  156. +1000:-1:+1001
  157. +10000:-1:+10001
  158. +100000:-1:+100001
  159. +1000000:-1:+1000001
  160. +10000000:-1:+10000001
  161. +100000000:-1:+100000001
  162. +1000000000:-1:+1000000001
  163. +10000000000:-1:+10000000001
  164. +123456789:+987654321:-864197532
  165. -123456789:+987654321:-1111111110
  166. -123456789:-987654321:+864197532
  167. +123456789:-987654321:+1111111110
  168. &bmul
  169. abc:abc:NaN
  170. abc:+0:NaN
  171. +0:abc:NaN
  172. +0:+0:+0
  173. +0:+1:+0
  174. +1:+0:+0
  175. +0:-1:+0
  176. -1:+0:+0
  177. +123456789123456789:+0:+0
  178. +0:+123456789123456789:+0
  179. -1:-1:+1
  180. -1:+1:-1
  181. +1:-1:-1
  182. +1:+1:+1
  183. +2:+3:+6
  184. -2:+3:-6
  185. +2:-3:-6
  186. -2:-3:+6
  187. +111:+111:+12321
  188. +10101:+10101:+102030201
  189. +1001001:+1001001:+1002003002001
  190. +100010001:+100010001:+10002000300020001
  191. +10000100001:+10000100001:+100002000030000200001
  192. +11111111111:+9:+99999999999
  193. +22222222222:+9:+199999999998
  194. +33333333333:+9:+299999999997
  195. +44444444444:+9:+399999999996
  196. +55555555555:+9:+499999999995
  197. +66666666666:+9:+599999999994
  198. +77777777777:+9:+699999999993
  199. +88888888888:+9:+799999999992
  200. +99999999999:+9:+899999999991
  201. &bdiv
  202. abc:abc:NaN
  203. abc:+1:abc:NaN
  204. +1:abc:NaN
  205. +0:+0:NaN
  206. +0:+1:+0
  207. +1:+0:NaN
  208. +0:-1:+0
  209. -1:+0:NaN
  210. +1:+1:+1
  211. -1:-1:+1
  212. +1:-1:-1
  213. -1:+1:-1
  214. +1:+2:+0
  215. +2:+1:+2
  216. +1000000000:+9:+111111111
  217. +2000000000:+9:+222222222
  218. +3000000000:+9:+333333333
  219. +4000000000:+9:+444444444
  220. +5000000000:+9:+555555555
  221. +6000000000:+9:+666666666
  222. +7000000000:+9:+777777777
  223. +8000000000:+9:+888888888
  224. +9000000000:+9:+1000000000
  225. +35500000:+113:+314159
  226. +71000000:+226:+314159
  227. +106500000:+339:+314159
  228. +1000000000:+3:+333333333
  229. +10:+5:+2
  230. +100:+4:+25
  231. +1000:+8:+125
  232. +10000:+16:+625
  233. +999999999999:+9:+111111111111
  234. +999999999999:+99:+10101010101
  235. +999999999999:+999:+1001001001
  236. +999999999999:+9999:+100010001
  237. +999999999999999:+99999:+10000100001
  238. &bmod
  239. abc:abc:NaN
  240. abc:+1:abc:NaN
  241. +1:abc:NaN
  242. +0:+0:NaN
  243. +0:+1:+0
  244. +1:+0:NaN
  245. +0:-1:+0
  246. -1:+0:NaN
  247. +1:+1:+0
  248. -1:-1:+0
  249. +1:-1:+0
  250. -1:+1:+0
  251. +1:+2:+1
  252. +2:+1:+0
  253. +1000000000:+9:+1
  254. +2000000000:+9:+2
  255. +3000000000:+9:+3
  256. +4000000000:+9:+4
  257. +5000000000:+9:+5
  258. +6000000000:+9:+6
  259. +7000000000:+9:+7
  260. +8000000000:+9:+8
  261. +9000000000:+9:+0
  262. +35500000:+113:+33
  263. +71000000:+226:+66
  264. +106500000:+339:+99
  265. +1000000000:+3:+1
  266. +10:+5:+0
  267. +100:+4:+0
  268. +1000:+8:+0
  269. +10000:+16:+0
  270. +999999999999:+9:+0
  271. +999999999999:+99:+0
  272. +999999999999:+999:+0
  273. +999999999999:+9999:+0
  274. +999999999999999:+99999:+0
  275. &bgcd
  276. abc:abc:NaN
  277. abc:+0:NaN
  278. +0:abc:NaN
  279. +0:+0:+0
  280. +0:+1:+1
  281. +1:+0:+1
  282. +1:+1:+1
  283. +2:+3:+1
  284. +3:+2:+1
  285. +100:+625:+25
  286. +4096:+81:+1
  287.